<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
<!-- qtexttable.cpp -->
  <title>QTextTable Class | Qt GUI 5.14.2</title>
  <link rel="stylesheet" type="text/css" href="style/offline-simple.css" />
  <script type="text/javascript">
    document.getElementsByTagName("link").item(0).setAttribute("href", "style/offline.css");
    // loading style sheet breaks anchors that were jumped to before
    // so force jumping to anchor again
    setTimeout(function() {
        var anchor = location.hash;
        // need to jump to different anchor first (e.g. none)
        location.hash = "#";
        setTimeout(function() {
            location.hash = anchor;
        }, 0);
    }, 0);
  </script>
</head>
<body>
<div class="header" id="qtdocheader">
  <div class="main">
    <div class="main-rounded">
      <div class="navigationbar">
        <table><tr>
<td ><a href="../qtdoc/index.html">Qt 5.14</a></td><td ><a href="qtgui-index.html">Qt GUI</a></td><td ><a href="qtgui-module.html">C++ Classes</a></td><td >QTextTable</td></tr></table><table class="buildversion"><tr>
<td id="buildversion" width="100%" align="right"><a href="qtgui-index.html">Qt 5.14.2 Reference Documentation</a></td>
        </tr></table>
      </div>
    </div>
<div class="content">
<div class="line">
<div class="content mainContent">
<div class="sidebar">
<div class="toc">
<h3><a name="toc">Contents</a></h3>
<ul>
<li class="level1"><a href="#public-functions">Public Functions</a></li>
<li class="level1"><a href="#details">Detailed Description</a></li>
</ul>
</div>
<div class="sidebar-content" id="sidebar-content"></div></div>
<h1 class="title">QTextTable Class</h1>
<!-- $$$QTextTable-brief -->
<p>The QTextTable class represents a table in a <a href="qtextdocument.html">QTextDocument</a>. <a href="#details">More...</a></p>
<!-- @@@QTextTable -->
<div class="table"><table class="alignedsummary">
<tr><td class="memItemLeft rightAlign topAlign"> Header:</td><td class="memItemRight bottomAlign">   <span class="preprocessor">#include &lt;QTextTable&gt;</span>
</td></tr><tr><td class="memItemLeft rightAlign topAlign"> qmake:</td><td class="memItemRight bottomAlign"> QT += gui</td></tr><tr><td class="memItemLeft rightAlign topAlign"> Inherits:</td><td class="memItemRight bottomAlign"> <a href="qtextframe.html">QTextFrame</a></td></tr></table></div><ul>
<li><a href="qtexttable-members.html">List of all members, including inherited members</a></li>
</ul>
<p><b>Note:</b> All functions in this class are <a href="../qtdoc/threads-reentrancy.html">reentrant</a>.</p>
<a name="public-functions"></a>
<h2 id="public-functions">Public Functions</h2>
<div class="table"><table class="alignedsummary">
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qtexttable.html#appendColumns">appendColumns</a></b>(int <i>count</i>)</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qtexttable.html#appendRows">appendRows</a></b>(int <i>count</i>)</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> QTextTableCell </td><td class="memItemRight bottomAlign"><b><a href="qtexttable.html#cellAt">cellAt</a></b>(int <i>row</i>, int <i>column</i>) const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> QTextTableCell </td><td class="memItemRight bottomAlign"><b><a href="qtexttable.html#cellAt-1">cellAt</a></b>(int <i>position</i>) const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> QTextTableCell </td><td class="memItemRight bottomAlign"><b><a href="qtexttable.html#cellAt-2">cellAt</a></b>(const QTextCursor &amp;<i>cursor</i>) const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> int </td><td class="memItemRight bottomAlign"><b><a href="qtexttable.html#columns">columns</a></b>() const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> QTextTableFormat </td><td class="memItemRight bottomAlign"><b><a href="qtexttable.html#format">format</a></b>() const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qtexttable.html#insertColumns">insertColumns</a></b>(int <i>index</i>, int <i>columns</i>)</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qtexttable.html#insertRows">insertRows</a></b>(int <i>index</i>, int <i>rows</i>)</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qtexttable.html#mergeCells">mergeCells</a></b>(int <i>row</i>, int <i>column</i>, int <i>numRows</i>, int <i>numCols</i>)</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qtexttable.html#mergeCells-1">mergeCells</a></b>(const QTextCursor &amp;<i>cursor</i>)</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qtexttable.html#removeColumns">removeColumns</a></b>(int <i>index</i>, int <i>columns</i>)</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qtexttable.html#removeRows">removeRows</a></b>(int <i>index</i>, int <i>rows</i>)</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qtexttable.html#resize">resize</a></b>(int <i>rows</i>, int <i>columns</i>)</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> QTextCursor </td><td class="memItemRight bottomAlign"><b><a href="qtexttable.html#rowEnd">rowEnd</a></b>(const QTextCursor &amp;<i>cursor</i>) const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> QTextCursor </td><td class="memItemRight bottomAlign"><b><a href="qtexttable.html#rowStart">rowStart</a></b>(const QTextCursor &amp;<i>cursor</i>) const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> int </td><td class="memItemRight bottomAlign"><b><a href="qtexttable.html#rows">rows</a></b>() const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qtexttable.html#setFormat">setFormat</a></b>(const QTextTableFormat &amp;<i>format</i>)</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qtexttable.html#splitCell">splitCell</a></b>(int <i>row</i>, int <i>column</i>, int <i>numRows</i>, int <i>numCols</i>)</td></tr>
</table></div>
<a name="details"></a>
<!-- $$$QTextTable-description -->
<div class="descr">
<h2 id="details">Detailed Description</h2>
<p>A table is a group of cells ordered into rows and columns. Each table contains at least one row and one column. Each cell contains a block, and is surrounded by a frame.</p>
<p>Tables are usually created and inserted into a document with the <a href="qtextcursor.html#insertTable">QTextCursor::insertTable</a>() function. For example, we can insert a table with three rows and two columns at the current cursor position in an editor using the following lines of code:</p>
<pre class="cpp">

      <span class="type"><a href="qtextcursor.html">QTextCursor</a></span> cursor(editor<span class="operator">-</span><span class="operator">&gt;</span>textCursor());
      cursor<span class="operator">.</span>movePosition(<span class="type"><a href="qtextcursor.html">QTextCursor</a></span><span class="operator">::</span>Start);

      <span class="type">QTextTable</span> <span class="operator">*</span>table <span class="operator">=</span> cursor<span class="operator">.</span>insertTable(rows<span class="operator">,</span> columns<span class="operator">,</span> tableFormat);

</pre>
<p>The table format is either defined when the table is created or changed later with <a href="qtexttable.html#setFormat">setFormat</a>().</p>
<p>The table currently being edited by the cursor is found with <a href="qtextcursor.html#currentTable">QTextCursor::currentTable</a>(). This allows its format or dimensions to be changed after it has been inserted into a document.</p>
<p>A table's size can be changed with <a href="qtexttable.html#resize">resize</a>(), or by using <a href="qtexttable.html#insertRows">insertRows</a>(), <a href="qtexttable.html#insertColumns">insertColumns</a>(), <a href="qtexttable.html#removeRows">removeRows</a>(), or <a href="qtexttable.html#removeColumns">removeColumns</a>(). Use <a href="qtexttable.html#cellAt">cellAt</a>() to retrieve table cells.</p>
<p>The starting and ending positions of table rows can be found by moving a cursor within a table, and using the <a href="qtexttable.html#rowStart">rowStart</a>() and <a href="qtexttable.html#rowEnd">rowEnd</a>() functions to obtain cursors at the start and end of each row.</p>
<p>Rows and columns within a QTextTable can be merged and split using the <a href="qtexttable.html#mergeCells">mergeCells</a>() and <a href="qtexttable.html#splitCell">splitCell</a>() functions. However, only cells that span multiple rows or columns can be split. (Merging or splitting does not increase or decrease the number of rows and columns.)</p>
<p>Note that if you have merged multiple columns and rows into one cell, you will not be able to split the merged cell into new cells spanning over more than one row or column. To be able to split cells spanning over several rows and columns you need to do this over several iterations.</p>
<div class="table"><table class="generic" width="80%">
 <tr valign="top" class="odd"><td ><img src="images/texttable-split.png" alt="Original Table" /></td><td >Suppose we have a 2x3 table of names and addresses. To merge both columns in the first row we invoke <a href="qtexttable.html#mergeCells">mergeCells</a>() with <i>row</i> = 0, <i>column</i> = 0, <i>numRows</i> = 1 and <i>numColumns</i> = 2.<pre class="cpp">

      table<span class="operator">-</span><span class="operator">&gt;</span>mergeCells(<span class="number">0</span><span class="operator">,</span> <span class="number">0</span><span class="operator">,</span> <span class="number">1</span><span class="operator">,</span> <span class="number">2</span>);

</pre>
</td></tr>
<tr valign="top" class="even"><td ><img src="images/texttable-merge.png" alt="" /></td><td >This gives us the following table. To split the first row of the table back into two cells, we invoke the <a href="qtexttable.html#splitCell">splitCell</a>() function with <i>numRows</i> and <i>numCols</i> = 1.<pre class="cpp">

      table<span class="operator">-</span><span class="operator">&gt;</span>splitCell(<span class="number">0</span><span class="operator">,</span> <span class="number">0</span><span class="operator">,</span> <span class="number">1</span><span class="operator">,</span> <span class="number">1</span>);

</pre>
</td></tr>
<tr valign="top" class="odd"><td ><img src="images/texttable-split.png" alt="Split Table" /></td><td >This results in the original table.</td></tr>
</table></div>
</div>
<p><b>See also </b><a href="qtexttableformat.html">QTextTableFormat</a>.</p>
<!-- @@@QTextTable -->
<div class="func">
<h2>Member Function Documentation</h2>
<!-- $$$appendColumns[overload1]$$$appendColumnsint -->
<h3 class="fn" id="appendColumns"><a name="appendColumns"></a><span class="type">void</span> QTextTable::<span class="name">appendColumns</span>(<span class="type">int</span> <i>count</i>)</h3>
<p>Appends <i>count</i> columns at the right side of the table.</p>
<p>This function was introduced in Qt 4.5.</p>
<p><b>See also </b><a href="qtexttable.html#insertColumns">insertColumns</a>(), <a href="qtexttable.html#insertRows">insertRows</a>(), <a href="qtexttable.html#resize">resize</a>(), <a href="qtexttable.html#removeRows">removeRows</a>(), <a href="qtexttable.html#removeColumns">removeColumns</a>(), and <a href="qtexttable.html#appendRows">appendRows</a>().</p>
<!-- @@@appendColumns -->
<!-- $$$appendRows[overload1]$$$appendRowsint -->
<h3 class="fn" id="appendRows"><a name="appendRows"></a><span class="type">void</span> QTextTable::<span class="name">appendRows</span>(<span class="type">int</span> <i>count</i>)</h3>
<p>Appends <i>count</i> rows at the bottom of the table.</p>
<p>This function was introduced in Qt 4.5.</p>
<p><b>See also </b><a href="qtexttable.html#insertColumns">insertColumns</a>(), <a href="qtexttable.html#insertRows">insertRows</a>(), <a href="qtexttable.html#resize">resize</a>(), <a href="qtexttable.html#removeRows">removeRows</a>(), <a href="qtexttable.html#removeColumns">removeColumns</a>(), and <a href="qtexttable.html#appendColumns">appendColumns</a>().</p>
<!-- @@@appendRows -->
<!-- $$$cellAt[overload1]$$$cellAtintint -->
<h3 class="fn" id="cellAt"><a name="cellAt"></a><span class="type"><a href="qtexttablecell.html">QTextTableCell</a></span> QTextTable::<span class="name">cellAt</span>(<span class="type">int</span> <i>row</i>, <span class="type">int</span> <i>column</i>) const</h3>
<p>Returns the table cell at the given <i>row</i> and <i>column</i> in the table.</p>
<p><b>See also </b><a href="qtexttable.html#columns">columns</a>() and <a href="qtexttable.html#rows">rows</a>().</p>
<!-- @@@cellAt -->
<!-- $$$cellAt$$$cellAtint -->
<h3 class="fn" id="cellAt-1"><a name="cellAt-1"></a><span class="type"><a href="qtexttablecell.html">QTextTableCell</a></span> QTextTable::<span class="name">cellAt</span>(<span class="type">int</span> <i>position</i>) const</h3>
<p>This is an overloaded function.</p>
<p>Returns the table cell that contains the character at the given <i>position</i> in the document.</p>
<!-- @@@cellAt -->
<!-- $$$cellAt$$$cellAtconstQTextCursor& -->
<h3 class="fn" id="cellAt-2"><a name="cellAt-2"></a><span class="type"><a href="qtexttablecell.html">QTextTableCell</a></span> QTextTable::<span class="name">cellAt</span>(const <span class="type"><a href="qtextcursor.html">QTextCursor</a></span> &amp;<i>cursor</i>) const</h3>
<p>This is an overloaded function.</p>
<p>Returns the table cell containing the given <i>cursor</i>.</p>
<!-- @@@cellAt -->
<!-- $$$columns[overload1]$$$columns -->
<h3 class="fn" id="columns"><a name="columns"></a><span class="type">int</span> QTextTable::<span class="name">columns</span>() const</h3>
<p>Returns the number of columns in the table.</p>
<p><b>See also </b><a href="qtexttable.html#rows">rows</a>().</p>
<!-- @@@columns -->
<!-- $$$format[overload1]$$$format -->
<h3 class="fn" id="format"><a name="format"></a><span class="type"><a href="qtexttableformat.html">QTextTableFormat</a></span> QTextTable::<span class="name">format</span>() const</h3>
<p>Returns the table's format.</p>
<p><b>See also </b><a href="qtexttable.html#setFormat">setFormat</a>().</p>
<!-- @@@format -->
<!-- $$$insertColumns[overload1]$$$insertColumnsintint -->
<h3 class="fn" id="insertColumns"><a name="insertColumns"></a><span class="type">void</span> QTextTable::<span class="name">insertColumns</span>(<span class="type">int</span> <i>index</i>, <span class="type">int</span> <i>columns</i>)</h3>
<p>Inserts a number of <i>columns</i> before the column with the specified <i>index</i>.</p>
<p><b>See also </b><a href="qtexttable.html#insertRows">insertRows</a>(), <a href="qtexttable.html#resize">resize</a>(), <a href="qtexttable.html#removeRows">removeRows</a>(), <a href="qtexttable.html#removeColumns">removeColumns</a>(), <a href="qtexttable.html#appendRows">appendRows</a>(), and <a href="qtexttable.html#appendColumns">appendColumns</a>().</p>
<!-- @@@insertColumns -->
<!-- $$$insertRows[overload1]$$$insertRowsintint -->
<h3 class="fn" id="insertRows"><a name="insertRows"></a><span class="type">void</span> QTextTable::<span class="name">insertRows</span>(<span class="type">int</span> <i>index</i>, <span class="type">int</span> <i>rows</i>)</h3>
<p>Inserts a number of <i>rows</i> before the row with the specified <i>index</i>.</p>
<p><b>See also </b><a href="qtexttable.html#resize">resize</a>(), <a href="qtexttable.html#insertColumns">insertColumns</a>(), <a href="qtexttable.html#removeRows">removeRows</a>(), <a href="qtexttable.html#removeColumns">removeColumns</a>(), <a href="qtexttable.html#appendRows">appendRows</a>(), and <a href="qtexttable.html#appendColumns">appendColumns</a>().</p>
<!-- @@@insertRows -->
<!-- $$$mergeCells[overload1]$$$mergeCellsintintintint -->
<h3 class="fn" id="mergeCells"><a name="mergeCells"></a><span class="type">void</span> QTextTable::<span class="name">mergeCells</span>(<span class="type">int</span> <i>row</i>, <span class="type">int</span> <i>column</i>, <span class="type">int</span> <i>numRows</i>, <span class="type">int</span> <i>numCols</i>)</h3>
<p>Merges the cell at the specified <i>row</i> and <i>column</i> with the adjacent cells into one cell. The new cell will span <i>numRows</i> rows and <i>numCols</i> columns. This method does nothing if <i>numRows</i> or <i>numCols</i> is less than the current number of rows or columns spanned by the cell.</p>
<p>This function was introduced in Qt 4.1.</p>
<p><b>See also </b><a href="qtexttable.html#splitCell">splitCell</a>().</p>
<!-- @@@mergeCells -->
<!-- $$$mergeCells$$$mergeCellsconstQTextCursor& -->
<h3 class="fn" id="mergeCells-1"><a name="mergeCells-1"></a><span class="type">void</span> QTextTable::<span class="name">mergeCells</span>(const <span class="type"><a href="qtextcursor.html">QTextCursor</a></span> &amp;<i>cursor</i>)</h3>
<p>This is an overloaded function.</p>
<p>Merges the cells selected by the provided <i>cursor</i>.</p>
<p>This function was introduced in Qt 4.1.</p>
<p><b>See also </b><a href="qtexttable.html#splitCell">splitCell</a>().</p>
<!-- @@@mergeCells -->
<!-- $$$removeColumns[overload1]$$$removeColumnsintint -->
<h3 class="fn" id="removeColumns"><a name="removeColumns"></a><span class="type">void</span> QTextTable::<span class="name">removeColumns</span>(<span class="type">int</span> <i>index</i>, <span class="type">int</span> <i>columns</i>)</h3>
<p>Removes a number of <i>columns</i> starting with the column at the specified <i>index</i>.</p>
<p><b>See also </b><a href="qtexttable.html#insertRows">insertRows</a>(), <a href="qtexttable.html#insertColumns">insertColumns</a>(), <a href="qtexttable.html#removeRows">removeRows</a>(), <a href="qtexttable.html#resize">resize</a>(), <a href="qtexttable.html#appendRows">appendRows</a>(), and <a href="qtexttable.html#appendColumns">appendColumns</a>().</p>
<!-- @@@removeColumns -->
<!-- $$$removeRows[overload1]$$$removeRowsintint -->
<h3 class="fn" id="removeRows"><a name="removeRows"></a><span class="type">void</span> QTextTable::<span class="name">removeRows</span>(<span class="type">int</span> <i>index</i>, <span class="type">int</span> <i>rows</i>)</h3>
<p>Removes a number of <i>rows</i> starting with the row at the specified <i>index</i>.</p>
<p><b>See also </b><a href="qtexttable.html#insertRows">insertRows</a>(), <a href="qtexttable.html#insertColumns">insertColumns</a>(), <a href="qtexttable.html#resize">resize</a>(), <a href="qtexttable.html#removeColumns">removeColumns</a>(), <a href="qtexttable.html#appendRows">appendRows</a>(), and <a href="qtexttable.html#appendColumns">appendColumns</a>().</p>
<!-- @@@removeRows -->
<!-- $$$resize[overload1]$$$resizeintint -->
<h3 class="fn" id="resize"><a name="resize"></a><span class="type">void</span> QTextTable::<span class="name">resize</span>(<span class="type">int</span> <i>rows</i>, <span class="type">int</span> <i>columns</i>)</h3>
<p>Resizes the table to contain the required number of <i>rows</i> and <i>columns</i>.</p>
<p><b>See also </b><a href="qtexttable.html#insertRows">insertRows</a>(), <a href="qtexttable.html#insertColumns">insertColumns</a>(), <a href="qtexttable.html#removeRows">removeRows</a>(), and <a href="qtexttable.html#removeColumns">removeColumns</a>().</p>
<!-- @@@resize -->
<!-- $$$rowEnd[overload1]$$$rowEndconstQTextCursor& -->
<h3 class="fn" id="rowEnd"><a name="rowEnd"></a><span class="type"><a href="qtextcursor.html">QTextCursor</a></span> QTextTable::<span class="name">rowEnd</span>(const <span class="type"><a href="qtextcursor.html">QTextCursor</a></span> &amp;<i>cursor</i>) const</h3>
<p>Returns a cursor pointing to the end of the row that contains the given <i>cursor</i>.</p>
<p><b>See also </b><a href="qtexttable.html#rowStart">rowStart</a>().</p>
<!-- @@@rowEnd -->
<!-- $$$rowStart[overload1]$$$rowStartconstQTextCursor& -->
<h3 class="fn" id="rowStart"><a name="rowStart"></a><span class="type"><a href="qtextcursor.html">QTextCursor</a></span> QTextTable::<span class="name">rowStart</span>(const <span class="type"><a href="qtextcursor.html">QTextCursor</a></span> &amp;<i>cursor</i>) const</h3>
<p>Returns a cursor pointing to the start of the row that contains the given <i>cursor</i>.</p>
<p><b>See also </b><a href="qtexttable.html#rowEnd">rowEnd</a>().</p>
<!-- @@@rowStart -->
<!-- $$$rows[overload1]$$$rows -->
<h3 class="fn" id="rows"><a name="rows"></a><span class="type">int</span> QTextTable::<span class="name">rows</span>() const</h3>
<p>Returns the number of rows in the table.</p>
<p><b>See also </b><a href="qtexttable.html#columns">columns</a>().</p>
<!-- @@@rows -->
<!-- $$$setFormat[overload1]$$$setFormatconstQTextTableFormat& -->
<h3 class="fn" id="setFormat"><a name="setFormat"></a><span class="type">void</span> QTextTable::<span class="name">setFormat</span>(const <span class="type"><a href="qtexttableformat.html">QTextTableFormat</a></span> &amp;<i>format</i>)</h3>
<p>Sets the table's <i>format</i>.</p>
<p><b>See also </b><a href="qtexttable.html#format">format</a>().</p>
<!-- @@@setFormat -->
<!-- $$$splitCell[overload1]$$$splitCellintintintint -->
<h3 class="fn" id="splitCell"><a name="splitCell"></a><span class="type">void</span> QTextTable::<span class="name">splitCell</span>(<span class="type">int</span> <i>row</i>, <span class="type">int</span> <i>column</i>, <span class="type">int</span> <i>numRows</i>, <span class="type">int</span> <i>numCols</i>)</h3>
<p>Splits the specified cell at <i>row</i> and <i>column</i> into an array of multiple cells with dimensions specified by <i>numRows</i> and <i>numCols</i>.</p>
<p><b>Note: </b>It is only possible to split cells that span multiple rows or columns, such as rows that have been merged using <a href="qtexttable.html#mergeCells">mergeCells</a>().</p><p>This function was introduced in Qt 4.1.</p>
<p><b>See also </b><a href="qtexttable.html#mergeCells">mergeCells</a>().</p>
<!-- @@@splitCell -->
</div>
        </div>
       </div>
   </div>
   </div>
</div>
<div class="footer">
   <p>
   <acronym title="Copyright">&copy;</acronym> 2020 The Qt Company Ltd.
   Documentation contributions included herein are the copyrights of
   their respective owners.<br/>    The documentation provided herein is licensed under the terms of the    <a href="http://www.gnu.org/licenses/fdl.html">GNU Free Documentation    License version 1.3</a> as published by the Free Software Foundation.<br/>    Qt and respective logos are trademarks of The Qt Company Ltd.     in Finland and/or other countries worldwide. All other trademarks are property
   of their respective owners. </p>
</div>
</body>
</html>
